package com.miniapp.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.miniapp.entity.BusinessFile;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;

/**
 * 业务文件服务接口
 *
 * <p>处理文件与业务的关联关系，支持文件上传并绑定、批量绑定等功能
 *
 * @author yourName
 * @date 2025-09-06
 */
public interface BusinessFileService extends IService<BusinessFile> {

    /**
     * 上传文件并绑定业务
     *
     * @param file 上传的文件
     * @param businessCode 业务编码
     * @param businessType 业务类型
     * @param uploaderId 上传人ID
     * @param sort 排序号
     * @return 业务文件关联实体
     */
    BusinessFile uploadAndBind(MultipartFile file, String businessCode, String businessType,
                               Long uploaderId, Integer sort);

    /**
     * 将已存在的临时文件绑定到业务（自动转为正式文件）
     *
     * @param fileId 临时文件ID
     * @param businessCode 业务编码
     * @param businessType 业务类型
     * @param sort 排序号
     * @return 业务文件关联实体
     */
    BusinessFile bindExistingFile(Long fileId, String businessCode, String businessType, Integer sort);

    /**
     * 根据业务信息查询关联的文件列表
     *
     * @param businessCode 业务编码
     * @param businessType 业务类型
     * @return 业务文件列表
     */
    List<BusinessFile> getByBusiness(String businessCode, String businessType);

    /**
     * 解除文件与业务的关联
     *
     * @param id 业务文件关联ID
     * @return 是否解除成功
     */
    boolean unbind(Long id);

    /**
     * 批量解除业务与文件的关联
     *
     * @param businessCode 业务编码
     * @param businessType 业务类型
     * @return 解除的数量
     */
    int batchUnbind(String businessCode, String businessType);
}
